/*
 * @Descripttion:
 * @version:
 * @Author: 周凯
 * @Date: 2020-05-06 21:37:36
 * @LastEditors: 周凯
 * @LastEditTime: 2020-05-11 15:29:33
 */
/**
 * @author alteredq / http://alteredqualia.com/
 * @author mrdoob / http://mrdoob.com/
 */

var WEBGL = {
  isWebGLAvailable: function () {
    try {
      var canvas = document.createElement("canvas");
      return !!(
        window.WebGLRenderingContext &&
        (canvas.getContext("webgl") || canvas.getContext("experimental-webgl"))
      );
    } catch (e) {
      return false;
    }
  },

  isWebGL2Available: function () {
    try {
      var canvas = document.createElement("canvas");
      return !!(window.WebGL2RenderingContext && canvas.getContext("webgl2"));
    } catch (e) {
      return false;
    }
  },

  getWebGLErrorMessage: function () {
    return this.getErrorMessage(1);
  },

  getWebGL2ErrorMessage: function () {
    return this.getErrorMessage(2);
  },

  getErrorMessage: function (version: any) {
    var names: any = {
      1: "WebGL",
      2: "WebGL 2",
    };

    var contexts: any = {
      1: window.WebGLRenderingContext,
      2: window.WebGL2RenderingContext,
    };

    var message =
      '您的显卡不支持webGl <a href="http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation" style="color:#000">$1</a>';

    var element = document.createElement("div");
    element.id = "webglmessage";
    element.style.fontFamily = "monospace";
    element.style.fontSize = "13px";
    element.style.fontWeight = "normal";
    element.style.textAlign = "center";
    element.style.background = "#fff";
    element.style.color = "#000";
    element.style.padding = "1.5em";
    element.style.width = "400px";
    element.style.margin = "5em auto 0";

    if (contexts[version]) {
      message = message.replace("$0", "graphics card");
    } else {
      message = message.replace("$0", "browser");
    }

    message = message.replace("$1", names[version]);

    element.innerHTML = message;

    return element;
  },
};

export { WEBGL };
